

/* 
  宏任务和微任务:
    - 异步代码有优先级关系,分为宏任务代码和微任务代码。微任务优先级高先执行，宏任务优先级低后执行。
    - 宏任务是宿主发起的：包括整体代码script，setTimeout，setInterval等等
    - 微任务是js自身发起的： Promise.then/catch/fanally，process.nextTick，queueMicrotask
    - 浏览器事件轮询执行过程:
      - 执行栈选择最先进入队列的宏任务（一般都是script），执行其同步代码直至结束
      - 在执行同步代码的过程中,如果遇到宏任务,则把宏任务交给浏览器对应的管理模块(DOM管理模块,ajax管理模块,定时器管理模块)进行管理,当宏任务的回调需要被执行的时候,会把回调函数放入回调队列(callBack queue)中等待执行
      - 如果遇到微任务,则直接把微任务的回调放入微任务队列中等待执行
      - 当同步代码执行完成,先清空微任务队列,然后去宏任务队列中执行宏任务,每执行完一个宏任务都会再去清空微任务队列

*/

setTimeout(() => {
  var a = 1;
  console.log(a);

})